/*
 * @Author: szx
 * @Date: 2022-03-19 13:05:23
 * @LastEditTime: 2022-03-19 13:26:33
 * @Description:
 * @FilePath: \leetcode\剑指offer\17\17.js
 */
/**
 * @param {number} n
 * @return {number[]}
 */
var printNumbers = function (n) {
    const res = [];
    for (let i = 1; i < 10 ** n; i++) res.push(i);
    return res;
};

var printNumbers = function (n) {
    return new Array(10 ** n).fill(1).map((_, i) => i + 1);
};

var printNumbers = function (n) {
    const res = [];
    const dfs = (str, len) => {
        // 到达指定长度，返回
        if (str.length === len) {
            return res.push(str * 1);
        }

        for (let i = 0; i <= 9; i++) {
            dfs(str + i, len);
        }
    };
    // 外层 i 控制长度，即 11 是两位，111 是三位     内层 j 控制该字符串第一位是什么，即首位
    for (let i = 1; i <= n; i++) {
        for (let j = 1; j <= 9; j++) {
            dfs(j.toString(), i);
        }
    }
    return res;
};
console.log(printNumbers(8).length);
